//
//  JSExample.h
//  SPJSBind
//
//  Created by cc on 12-6-7.
//  Copyright (c) 2012年 触控科技. All rights reserved.
//

#ifndef SPJSBind_JSExample_h
#define SPJSBind_JSExample_h

#include "jsbind.h"
using namespace SP_JSBind ;

#define GETFUNC(XXX, VAR, TYPE)      TYPE Get##XXX() { return VAR ; }
#define SETFUNC(XXX, VAR, TYPE)      void Set##XXX(TYPE x) { VAR = x ; }
#define GET_SET_FUNC(XXX, VAR, TYPE) \
    GETFUNC(XXX, VAR, TYPE) \
    SETFUNC(XXX, VAR, TYPE)

class CExample
{
public:
    CExample() ;
    ~CExample() ;

    // bind js.
    CREATE_JS_CLASS(CExample)

    JS_FUNCTION_CONVERT_STATIC(CExample, GetThis, js_GetThis, RETURN_PRIVATE)

    JS_PROPERTY_ENUM_BEGIN(CExample)
        JS_PROPERTY_ENUM_BIND(CExample_BVar)
        JS_PROPERTY_ENUM_BIND(CExample_IVar)
        JS_PROPERTY_ENUM_BIND(CExample_DVar)
        JS_PROPERTY_ENUM_BIND(CExample_SVar)
    JS_PROPERTY_ENUM_END
    ////////////////////////////////////////////

    GET_SET_FUNC(BoolVar, m_bBoolVar, bool)
    GET_SET_FUNC(IntVar, m_nIntVar, int)
    GET_SET_FUNC(DoubleVar, m_dDoubleVar, double)
    GET_SET_FUNC(StrVar, m_StrVar, char*)

public:
    CExample*  GetThis() ;
public:
    bool    m_bBoolVar ;
    int     m_nIntVar ;
    double  m_dDoubleVar ;
    char*   m_StrVar ;
};

#endif





















